package recursion;

import java.util.Scanner;

public class JieCheng {
    public static void main(String[] args) {
        while (true) {
            System.out.print("输入整数求阶乘：");
            int n = new Scanner(System.in).nextInt();
            long result = f(n);
            System.out.printf("%d的阶乘是：%d：\n", n, result);
        }
    }
    /*
    1. n * f(n-1)
    2. 最简问题：n=0，数学规定0的阶乘是1
    3. n是负数不能运算，直接返回0
     */
    private static long f(int n) {
        if (n < 0) {  //特殊情况
            return 0;
        }
        if (n == 0) { //最简问题
            return 1;
        }
        return n*f(n-1);  //递归
    }
}
